/*
    28. 找出字符串中第一个匹配项的下标
    给你两个字符串 haystack 和 needle ，请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标（下标从 0 开始）。如果 needle 不是 haystack 的一部分，则返回  -1 。

    示例 1：
    输入：haystack = "sadbutsad", needle = "sad"
    输出：0
    解释："sad" 在下标 0 和 6 处匹配。
    第一个匹配项的下标是 0 ，所以返回 0 。

    示例 2：

    输入：haystack = "leetcode", needle = "leeto"
    输出：-1
    解释："leeto" 没有在 "leetcode" 中出现，所以返回 -1 。


    提示：

    1 <= haystack.length, needle.length <= 104
    haystack 和 needle 仅由小写英文字符组成
*/

pub fn str_str(haystack: String, needle: String) -> i32 {
    let h_len = haystack.len();
    let n_len = needle.len();
    for i in 0..h_len {
        if h_len < i + n_len {
            return -1_i32;
        }

        let temp = &haystack[i..i + n_len];
        if needle.eq(temp) {
            return i as i32;
        }
    }
    -1_i32
}

#[cfg(test)]
mod test {
    use super::str_str;
    #[test]
    fn test() {
        let haystack = "a".to_string();
        let needle = "a".to_string();
        let s = str_str(haystack, needle);
        assert_eq!(0_i32, s);
    }
}
